/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Presentacion;

import clases.ActividadVO;
import java.util.ArrayList;
import java.util.Date;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ValueChangeEvent;
import javax.faces.event.ValueChangeListener;
import negocio.Actividad;

/**
 *
 * @author Alex
 */
public class ActividadFormaBean implements ValueChangeListener{

    private Actividad actividad;
    private ActividadVO actividadVO;
    private String titulo;
    private String diaInicio;
    private String mesInicio;
    private String anioInicio;
    private String horaInicio;
    private String minutoInicio;
    private String diaFin;
    private String mesFin;
    private String anioFin;
    private String horaFin;
    private String minutoFin;
    private boolean todoElDia;
    private boolean seRepite;
    private int repiteCada;
    private int dias;
    private int semanas;
    private int meses;
    private int anios;
    private ArrayList<String> diasSemana = new ArrayList<String>();
    private int semanaMes;
    private boolean recordatorio = false;

    public Actividad getActividad() {
        return actividad;
    }

    public void setActividad(Actividad actividad) {
        this.actividad = actividad;
    }

    public int getAnios() {
        return anios;
    }

    public void setAnios(int anios) {
        this.anios = anios;
    }

    public int getSemanaMes() {
        return semanaMes;
    }

    public void setSemanaMes(int semanaMes) {
        this.semanaMes = semanaMes;
    }

    public int getDias() {
        return dias;
    }

    public void setDias(int dias) {
        this.dias = dias;
    }

    public ArrayList<String> getDiasSemana() {
        return diasSemana;
    }

    public void setDiasSemana(ArrayList<String> diasSemana) {
        this.diasSemana = diasSemana;
    }

    public String getHoraInicio() {
        return horaInicio;
    }

    public void setHoraInicio(String horaInicio) {
        this.horaInicio = horaInicio;
    }

    public int getMeses() {
        return meses;
    }

    public void setMeses(int meses) {
        this.meses = meses;
    }

    public boolean getSeRepite() {
        return seRepite;
    }

    public void setSeRepite(boolean seRepite) {
        this.seRepite = seRepite;
    }

    public int getSemanas() {
        return semanas;
    }

    public void setSemanas(int semanas) {
        this.semanas = semanas;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public int getRepiteCada() {
        return repiteCada;
    }

    public void setRepiteCada(int repiteCada) {
        this.repiteCada = repiteCada;
    }

    public boolean isTodoElDia() {
        return todoElDia;
    }

    public void setTodoElDia(boolean todoElDia) {
        this.todoElDia = todoElDia;
    }

    public String getAnioFin() {
        return anioFin;
    }

    public void setAnioFin(String anioFin) {
        this.anioFin = anioFin;
    }

    public String getAnioInicio() {
        return anioInicio;
    }

    public void setAnioInicio(String anioInicio) {
        this.anioInicio = anioInicio;
    }

    public String getDiaFin() {
        return diaFin;
    }

    public void setDiaFin(String diaFin) {
        this.diaFin = diaFin;
    }

    public String getDiaInicio() {
        return diaInicio;
    }

    public void setDiaInicio(String diaInicio) {
        this.diaInicio = diaInicio;
    }

    public String getHoraFin() {
        return horaFin;
    }

    public void setHoraFin(String horaFin) {
        this.horaFin = horaFin;
    }

    public String getMesFin() {
        return mesFin;
    }

    public void setMesFin(String mesFin) {
        this.mesFin = mesFin;
    }

    public String getMesInicio() {
        return mesInicio;
    }

    public void setMesInicio(String mesInicio) {
        this.mesInicio = mesInicio;
    }

    public String getMinutoFin() {
        return minutoFin;
    }

    public void setMinutoFin(String minutoFin) {
        this.minutoFin = minutoFin;
    }

    public String getMinutoInicio() {
        return minutoInicio;
    }

    public void setMinutoInicio(String minutoInicio) {
        this.minutoInicio = minutoInicio;
    }

    public ActividadVO getActividadVO() {
        return actividadVO;
    }

    public void setActividadVO(ActividadVO actividadVO) {
        this.actividadVO = actividadVO;
    }

    public boolean isRecordatorio() {
        return recordatorio;
    }

    public void setRecordatorio(boolean recordatorio) {
        this.recordatorio = recordatorio;
    }

    public void seRepiteValor(){
        this.seRepite = !this.seRepite;
        this.repiteCada = 0;
    }

    public void todoElDiaValor(){
        this.todoElDia = !this.todoElDia;
        if(this.todoElDia){
            this.horaInicio = "07";
            this.minutoInicio = "00";
            this.horaFin = "24";
            this.minutoFin = "00";
        } else if(!this.todoElDia){
            this.horaInicio = "";
            this.minutoInicio = "";
            this.horaFin = "";
            this.minutoFin = "";
        }


    }

    @Override
    public void processValueChange(ValueChangeEvent event) throws AbortProcessingException {
        this.repiteCada = Integer.parseInt((String)event.getNewValue());
        switch(this.repiteCada){
            case 2:
                this.diasSemana.add("lunes");
                this.diasSemana.add("jueves");
                break;
            case 3:
                this.diasSemana.add("martes");
                this.diasSemana.add("viernes");
                break;
            case 4:
                this.diasSemana.add("sabado");
                break;
            case 5:
                this.diasSemana.add("domingo");
                break;
        }


    }

    public boolean repiteCadaValor(int opcion){
        boolean res = false;
        if(this.repiteCada==opcion)
            res = true;
        return res;

    }

    public String submit(){
        actividadVO = new ActividadVO();
        actividadVO.setNombre(titulo);
        Date fechaIni = new Date();

        fechaIni.setDate(Integer.parseInt(diaInicio));
        fechaIni.setMonth(Integer.parseInt(mesInicio)-1);
        fechaIni.setYear(Integer.parseInt(anioInicio)+100);

        fechaIni.setHours(Integer.parseInt(horaInicio));
        fechaIni.setMinutes(Integer.parseInt(minutoInicio));

        actividadVO.setInicio(fechaIni);

        Date fechaFin = new Date();

        fechaFin.setDate(Integer.parseInt(diaFin));
        fechaFin.setMonth(Integer.parseInt(mesFin)-1);
        fechaFin.setYear(Integer.parseInt(anioFin)+100);

        fechaFin.setHours(Integer.parseInt(horaFin));
        fechaFin.setMinutes(Integer.parseInt(minutoFin));

        actividadVO.setFin(fechaFin);

        if(seRepite){
            switch(repiteCada){
                case 1:
                    actividadVO.setTipoRepeticion(1);
                    actividadVO.setCantidad(dias);
                    break;
                case 6:
                    actividadVO.setTipoRepeticion(2);
                    actividadVO.setCantidad(semanas);
                    actividadVO.setDias(diasSemana);
                    break;
                case 7:
                    actividadVO.setTipoRepeticion(3);
                    actividadVO.setCantidad(meses);
                    if(semanaMes == 1)
                        actividadVO.setSemanaMes(1);
                    else if(semanaMes == 2)
                        actividadVO.setSemanaMes(2);
                    break;
                case 8:
                    actividadVO.setTipoRepeticion(4);
                    actividadVO.setCantidad(anios);
                    break;
            }
        }

        actividadVO.setRecordatorio(recordatorio);
        actividad.addNuevo(actividadVO);
        return "OK";
    }

}
